package com.ftg.learn.util.page;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * 通用的业务层面自定义分页功能实现类
 * 可以传递基础sql通过实现分页,主要完成多表left right join 查询使用
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/5/9 下午3:31
 */
@Service
public class PageCommUtil<VO> {

    @Resource
    PageMapperUtil<VO> pageMapperUtil;

    /**
     * 自定义service层，处理多表联合查询的方法
     *
     * @param sql    自定义的纯sql
     * @param pageNo 当前页数
     * @param limit  当前显示条数
     * @return ipage 分页信息封装类
     */
    public IPage<VO> pageUtil(String sql, long pageNo, long limit) {
        IPage<VO> ipage = new Page<>(pageNo, limit);

        ipage.setRecords(pageMapperUtil.showReport(sql, ipage));

        ipage.setTotal(pageMapperUtil.countReport(sql));

        return ipage;
    }

    public IPage<VO> pageUtil1(String sql, QueryWrapper<VO> q, long pageNo, long limit) {
        IPage<VO> ipage = new Page<>(pageNo, limit);

        ipage.setRecords(pageMapperUtil.showReport1(sql, q, ipage));

        ipage.setTotal(pageMapperUtil.countReport1(sql, q));

        return ipage;
    }


}
